package com.shu.proxcy.jdk;

import sun.misc.ProxyGenerator;

import java.io.FileOutputStream;

/**
 * @author ssm
 * @version V1.0
 * @description:
 * @date 2019/3/8 20:17
 */

public class Test {


    public static void main(String[] args) throws Exception {


        Person person = (Person) new Meipo().getInstance(new Xiaoming());
        System.out.println(person.getClass());
        person.findLove();

        // 原理
        // 1.拿到对象的引用获取他的接口
        // 2.JDK代理重新生成一个类
        // 3.被代理对象的引用也拿到
        // 4.重新动态生成一个class字节码
        // 5.编译

        byte[] bytes = ProxyGenerator.generateProxyClass("$Proxy0", new Class[]{person.getClass()});
        FileOutputStream os = new FileOutputStream("xxx.class");
        os.write(bytes);
        os.flush();
    }
}
